package xkp.lesson5;



import org.junit.Test;

import java.sql.*;

public class TestJDBC {

    @Test
    public void testSelectAll() throws ClassNotFoundException, SQLException {
        //通过JDBC连接数据库需要有基本数据库四要素
        //1、连接数据库的url
        String url = "jdbc:mysql://192.168.93.59:3306/day37?characterEncoding=UTF-8";
        //2、连接数据库的用户名
        String user = "root";
        //3、连接数据库的密码
        String password = "123456";
        //4、数据库的驱动
        String driver = "com.mysql.jdbc.Driver";


        //开始连接数据库
        //1、加载数据库驱动 通过反射加载 回去加载driver  "com.mysql.jdbc.Driver"这个类
        //2、同时自动执行静态代码块
        //Class.forName(driver);
        //2、通过驱动管理器获取与数据库的连接
        //Connection是一个接口，该接口是JDBC中的一个规范
        //此处是通过父类(父接口)的引用指向子类的对象  此处子类的对象是mysql厂商实现的
        Connection connection = DriverManager.getConnection(url,user,password);
        //通过对数据库的连接获取Statement对象
        //可以通过Statement对象操作数据库
        Statement statement = connection.createStatement();
        //sql
        String sql = "select * from user_info";
        //通过statement执行sql语句
        //ResultSet保存查询结果  -- 程序游标
        ResultSet set = statement.executeQuery(sql);
        //遍历ResultSet，获取查询数据
        //next判断下面是否有值，同时移动到下一个
        while(set.next()){
            //根据字段结果集中的字段名称取值
            Integer userId = set.getInt("user_id");
            String userName = set.getString("user_name");
            System.out.println(userId+":"+userName);
        }

        //关闭资源
        set.close();
        statement.close();
        connection.close();
    }

    @Test
    public void test2() throws SQLException {
        //通过JDBC连接数据库需要有基本数据库四要素
        //1、连接数据库的url
        String url = "jdbc:mysql://192.168.93.59:3306/day37?characterEncoding=UTF-8";
        //2、连接数据库的用户名
        String user = "root";
        //3、连接数据库的密码
        String password = "123456";
        //4、数据库的驱动
        String driver = "com.mysql.jdbc.Driver";


        //开始连接数据库
        //1、加载数据库驱动 通过反射加载 回去加载driver  "com.mysql.jdbc.Driver"这个类
        //2、同时自动执行静态代码块
        //Class.forName(driver);
        //2、通过驱动管理器获取与数据库的连接
        //Connection是一个接口，该接口是JDBC中的一个规范
        //此处是通过父类(父接口)的引用指向子类的对象  此处子类的对象是mysql厂商实现的
        Connection connection = DriverManager.getConnection(url,user,password);
        //通过对数据库的连接获取Statement对象
        //可以通过Statement对象操作数据库
        Statement statement = connection.createStatement();
        //sql
        //String sql = "select * from user_info where user_name = "+ "张三";
        String sql = "select * from user_info where user_name = "+ "\'张三\'";
        //通过statement执行sql语句
        //ResultSet保存查询结果  -- 程序游标
        ResultSet set = statement.executeQuery(sql);
        //遍历ResultSet，获取查询数据
        //next判断下面是否有值，同时移动到下一个
        while(set.next()){
            //根据字段结果集中的字段名称取值
            Integer userId = set.getInt("user_id");
            String userName = set.getString("user_name");
            System.out.println(userId+":"+userName);
        }

        //关闭资源
        set.close();
        statement.close();
        connection.close();
    }

    //在sql中有一种非常奇怪的现象

    @Test
    public void login() throws SQLException {
        //String userName = "张三";
        String userName = "随便写\' OR \'1\'=\'1";
        String userPwd = "随便写\' OR \'1\'=\'1";
        //通过JDBC连接数据库需要有基本数据库四要素
        //1、连接数据库的url
        String url = "jdbc:mysql://192.168.93.59:3306/day37?characterEncoding=UTF-8";
        //2、连接数据库的用户名
        String user = "root";
        //3、连接数据库的密码
        String password = "123456";
        //4、数据库的驱动
        String driver = "com.mysql.jdbc.Driver";


        //开始连接数据库
        //1、加载数据库驱动 通过反射加载 回去加载driver  "com.mysql.jdbc.Driver"这个类
        //2、同时自动执行静态代码块
        //Class.forName(driver);
        //2、通过驱动管理器获取与数据库的连接
        //Connection是一个接口，该接口是JDBC中的一个规范
        //此处是通过父类(父接口)的引用指向子类的对象  此处子类的对象是mysql厂商实现的
        Connection connection = DriverManager.getConnection(url,user,password);
        //通过对数据库的连接获取Statement对象
        //可以通过Statement对象操作数据库
        Statement statement = connection.createStatement();
        //sql
        //String sql = "select * from user_info where user_name = "+ "张三";
        String sql = "select * from user_info where user_name = \'"+userName+"\'"+ " and user_pwd =\'"+userPwd+"\'";
        //通过statement执行sql语句
        //ResultSet保存查询结果  -- 程序游标
        ResultSet set = statement.executeQuery(sql);
        //遍历ResultSet，获取查询数据
        //next判断下面是否有值，同时移动到下一个
        while(set.next()){
            //根据字段结果集中的字段名称取值
            Integer thisuserId = set.getInt("user_id");
            String thisuserName = set.getString("user_name");
            String thisuserPwd = set.getString("user_pwd");
            System.out.println(thisuserId+":"+thisuserName+":"+thisuserPwd);
        }

        //关闭资源
        set.close();
        statement.close();
        connection.close();
    }
}
